package department.fc.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.tomcat.dbcp.dbcp.BasicDataSource;

/*
 * MariaDB와 연결을 담당할 DatabaseManager 클래스
 * 연결을 맺고 끊고 쿼리를 날리는 역할을 한다. 
 * 싱글톤 패턴을 사용 
 */


public class DatabaseManager {
	private static DatabaseManager instance = new DatabaseManager();
	
	private BasicDataSource bds;
	/*
	 * DB연결에 사용하는 DataSource는 여러가지가 있는데 그중 BasicDataSource는 아파치에서 제공하는 클래스다.
	 * BasicDataSource를 이용하려면 두개의 라이브러리가 필요한데 그 두 개의 라이브러리는 lib 폴더에 넣어놨다.
	 * BasicDataSource를 사용하기 위해서는 기본적으로 4개의 속성들을 Setter메소드를 통해 세팅해줘야 한다. 
	 * 클래스 네임, url, username, password
	 */
	private DatabaseManager(){
		bds = new BasicDataSource();
		bds.setDriverClassName("org.mariadb.jdbc.Driver");
		bds.setUrl("jdbc:mariadb://waneeyo.iptime.org:3306/kosta");
		bds.setUsername("kosta");
		bds.setPassword("philia");
	}//기본 세팅 완료
	
	public static DatabaseManager getInstance(){
		return instance;
	}
	public Connection getConnection() throws SQLException{
		return bds.getConnection();
	}
	public void close(Connection conn, PreparedStatement pstmt){
		
		if(pstmt != null){
			try{
				pstmt.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
		if(conn != null){
			try{
				conn.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
	}
	public void close(Connection conn, PreparedStatement pstmt, ResultSet rset){
		if(rset != null){
			try {
				rset.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(pstmt != null){
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(conn != null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
